#pragma once

#include <vector>

#include "spring.h"
#include "shapes.h"
#include "body.h"

class World
{
private:
    static LinkedList<Spring *> *mSprings;
    static LinkedList<Body   *> *mBodies;
    static std::vector<Shape  *> *mShapes; // TODO: Implement own arraylist
public:
    static void Init();
    static void Free();
    static void Tick();

    static Spring *SpringNew( Shape *pFrom, Shape *pTo, float pSpringConstant, float pDampingConstant, float pRestLength );
    static Shape *ShapeNew( Vector2 pPosition );
    static CircleShape *CircleShapeNew( Vector2 pPosition, float pRadius );
};

